/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.ucase.casemain.service;

import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseReasonMainRecordQueryDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseReasonMainRecordSaveDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseReasonMainRecordVo;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;

/**
 * 描述: 案件案由记录表 case_reason_main_record 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年02月22日
 */
public interface ICaseReasonMainRecordService extends BaseService {


    /**
     * 【V1.0.0】描述：保存案件案由记录
     *
     * @param saveDto {@link CaseReasonMainRecordSaveDto}
     * @return {@link Result <String>} 保存结果
     * @author xiangyuyu
     * @date 2022-02-28 10:47
     */
    Result<String> saveCaseReasonRecord(CaseReasonMainRecordSaveDto saveDto);

    /**
     * 【V1.0.0】描述：获取案件案由列表
     *
     * @param queryDto {@link CaseReasonMainRecordQueryDto}
     * @return {@link List< CaseReasonMainRecordVo >} 案件案由列表
     * @author xiangyuyu
     * @date 2022-02-28 10:47
     */
    List<CaseReasonMainRecordVo> getCaseReasonRecordList(CaseReasonMainRecordQueryDto queryDto);

    /**
     * 【V1.0.0】描述：根据唯一标识查询案件案由记录
     *
     * @param id 唯一标识
     * @return {@link CaseReasonMainRecordVo} 案件案由记录
     * @author xiangyuyu
     * @date 2022-02-28 10:47
     */
    CaseReasonMainRecordVo getCaseReasonRecord(String id);

    /**
     * 描述：根据案件id获取案件案由详情数据【V2.0.0前仅适用单案由】
     *
     * @param caseId 案件id
     * @return {@link CaseReasonMainRecordVo} 案件案由详情数据
     * @author xiangyuyu
     * @date 2022-02-28 11:17
     */
    CaseReasonMainRecordVo getCaseReasonRecordByCaseId(String caseId);


    /**
     * 描述：根据案件id获取案件案由详情数据-适配多案由
     *
     * @param caseId 案件id
     * @return {@link List<CaseReasonMainRecordVo>} 案件案由详情数据
     * @author xiangyuyu
     * @date 2022-05-23 09:20
     */
    List<CaseReasonMainRecordVo> getCaseReasonRecordListByCaseId(String caseId);

    /**
     * 清空处罚事项的违则罚则(速结转普通)
     * @param caseId
     */
    void dealCaseReasonRecordOfChangeWorkFlow(String caseId);
}
